2.5 路由函数re_path
如路由函数和转换器都无法满足URL匹配设计,还可以使用re_path
path的原则就是写的URL是什么就匹配什么,而re_path则是按照正则表达式的方式来匹配,更加通用且灵活,但缺点可能就是不直观,不好理解。
使用re_path的案例
•正则表达式中需要使用()将待匹配的参数包起来,这称之为分组
•分组内,直接写正则表达式的称为无名分组,此时视图函数形参名可以随意定义
•分组内,可以使用?P<>的方式包裹一个变量名,这称为有名分组。此时视图函数的形参名必须保持一致
def year_archive(requeet,year): # 传入动态URL(yaer)
return HttpResponse("这是导入re_path的年份")
def month_archive(requeet,month,year): # 传入动态URL(yaer,month)
return HttpResponse("这上导入re_path的年月")
urlpatterns = [
path( 'admin/' , admin.site.urls),
path( 'hello' , hello),
# re_path(r"^ariticles/([0-9]{4})$", year_archive) , #无名分组
re_path (r "^ariticles/(?P <year >[0-9]{4})/(?P<month>[0-9]{2})$"' , month_archive),
# 有名分组,P必须是大写的,不然会报错
]